import java.util.ArrayList;
import java.util.List;

public class UserService implements Loggable {
    private List<User> userList = new ArrayList<>();
    private static final String USER_FILE = "users.txt"; // 存储用户数据的文件

    // 构造方法：初始化时从文件加载用户数据
    public UserService() {
        userList = FileUtil.readUsersFromFile(USER_FILE);
        // 如果文件为空，初始化默认管理员
        if (userList.isEmpty()) {
            userList.add(new Admin("A001", "admin", "ynuinfo#777", "13800138000"));
            saveUsers(); // 保存到文件
        }
    }

    // 用户登录
    public User login(String username, String password) {
        for (User user : userList) {
            if (user.getUsername().equals(username) && user.verifyPassword(password)) {
                logOperation("用户登录：" + username);
                return user;
            }
        }
        return null;
    }

    // 添加用户
    public boolean addUser(User user) {
        // 检查ID和用户名唯一性
        for (User u : userList) {
            if (u.getUserId().equals(user.getUserId()) || u.getUsername().equals(user.getUsername())) {
                return false;
            }
        }
        userList.add(user);
        logOperation("添加用户：" + user.getUsername());
        return true;
    }

    // 获取所有用户
    public List<User> getAllUsers() {
        return new ArrayList<>(userList); // 返回副本，避免外部修改
    }

// UserService.java 中完善保存逻辑
public void saveUsers() {
    try {
        // 确保文件路径正确，使用相对路径时会保存在程序运行目录
        FileUtil.writeUsersToFile(userList, "users.txt");
        System.out.println("用户数据已保存，共" + userList.size() + "条记录");
    } catch (Exception e) {
        System.err.println("保存用户数据失败：" + e.getMessage());
    }
}
}
    